package com.infinity.googleplacesandmaps;  
    import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
     
    import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
     
    import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
     
    public class BusActivity extends ListActivity {
     
        // Progress Dialog
        private ProgressDialog pDialog;
     
        // Creating JSON Parser object
        JSONParser jParser = new JSONParser();
     
        ArrayList<HashMap<String, String>> productsList;
     
        // url to get all products list
        private static String url_all_products = "http://192.168.1.149/Default.aspx";
     
        // JSON Node names
        private static final String TAG_SUCCESS = "success";
        private static final String TAG_PRODUCTS = "products";
        private static final String TAG_PID = "pid";
        private static final String TAG_NAME = "name";
     
        // products JSONArray
        JSONArray products = null;
        
        String PlacesID = "";
        
        String Address = "";
        
        ListView lv = null;
        
        JSONObject json = null;
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.buslist_activity);
            
            
            Intent i = getIntent();
    		PlacesID = i.getStringExtra("KEY_REFERENCE");
    		Address = i.getStringExtra("Address");
    		TextView lbl_PlacesID = (TextView) findViewById(R.id.placesrefrance);
    		lbl_PlacesID.setText(Address);
     
            // Hashmap for ListView
            productsList = new ArrayList<HashMap<String, String>>();
     
            // Loading products in Background Thread
            new LoadAllProducts().execute();
     
            // Get listview
            lv = getListView();
     
            // on seleting single product
            // launching Edit Product Screen
            lv.setOnItemClickListener(new OnItemClickListener() {
     
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                	
                	// Check your log cat for JSON reponse
                    Log.d("tv pid: ", "Inside click fun()");
                    
                    // getting values from selected ListItem
                    String pid = ((TextView) view.findViewById(R.id.pid)).getText().toString();
                    String BusDescription = ((TextView) view.findViewById(R.id.reference)).getText().toString();
                  
                   
                    // Check your log cat for JSON reponse
                    Log.d("pid: ", pid.toString());
                    Log.d("BusDescription: ", BusDescription.toString());
     
                    // Starting new intent
                    Intent in = new Intent(getApplicationContext(),
                            BusDetailsActivity.class);
                    // sending pid to next activity
                    in.putExtra(TAG_PID, pid);
                    in.putExtra("BusDescription", BusDescription);
     
                    // starting new activity and expecting some response back
                    //startActivityForResult(in, 100);
                    startActivity(in);
                    
                }
            });
     
        }
     
        // Response from Edit Product Activity
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            // if result code 100
            if (resultCode == 100) {
                // if result code 100 is received
                // means user edited/deleted product
                // reload this screen again
                Intent intent = getIntent();
                finish();
                startActivity(intent);
            }
     
        }
     
        /**
         * Background Async Task to Load all product by making HTTP Request
         * */
        class LoadAllProducts extends AsyncTask<String, String, String> {
     
            /**
             * Before starting background thread Show Progress Dialog
             * */
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                pDialog = new ProgressDialog(BusActivity.this);
                pDialog.setMessage("Loading Buslist. Please wait...");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(false);
                pDialog.show();
            }
     
            /**
             * getting All products from url
             * */
            protected String doInBackground(String... args) {
                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                
                params.add(new BasicNameValuePair("placesid", PlacesID));
                params.add(new BasicNameValuePair("address", Address));
                
                // Check your log cat for JSON reponse
                Log.d("PlacesID: ", PlacesID.toString());
                
                // getting JSON string from URL
                json = jParser.makeHttpRequest(url_all_products, "GET", params);
     
                // Check your log cat for JSON reponse
                //Log.d("All Products: ", json.toString());
     
               
     
                return null;
            }
     
            /**
             * After completing background task Dismiss the progress dialog
             * **/
            protected void onPostExecute(String file_url) {
                // dismiss the dialog after getting all products
                pDialog.dismiss();
                // updating UI from Background Thread
                runOnUiThread(new Runnable() {
                    public void run() {
                    	
                    	 try {
                             // Checking for SUCCESS TAG
                             int success = json.getInt(TAG_SUCCESS);
              
                             if (success == 1) {
                                 // products found
                                 // Getting Array of Products
                                 products = json.getJSONArray(TAG_PRODUCTS);
              
                                 // looping through All Products
                                 for (int i = 0; i < products.length(); i++) {
                                     JSONObject c = products.getJSONObject(i);
              
                                     // Storing each json item in variable
                                     String id = c.getString(TAG_PID);
                                     String name = c.getString(TAG_NAME);
                                     String Desc = c.getString("price");
                                     
                                     Log.d("Desc: ", Desc.toString());
                                     // creating new HashMap
                                     HashMap<String, String> map = new HashMap<String, String>();
              
                                     // adding each child node to HashMap key => value
                                     map.put(TAG_PID, id);
                                     map.put(TAG_NAME, name);
                                     map.put("reference", Desc);
              
                                     // adding HashList to ArrayList
                                     productsList.add(map);
                                 }
                             } else {
                                 // no products found
                                 // Launch Add New product Activity
                             	
                                 //Intent i = new Intent(getApplicationContext(),
                                 //        NewProductActivity.class);
                                 // Closing all previous activities
                                 //i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                 //startActivity(i);
                             }
                         } catch (JSONException e) {
                             e.printStackTrace();
                         }
                    	 
                        /**
                         * Updating parsed JSON data into ListView
                         * */
                        ListAdapter adapter = new SimpleAdapter(
                                BusActivity.this, productsList,
                                R.layout.list_item, new String[] { TAG_PID,
                                        TAG_NAME, "reference"},
                                new int[] { R.id.pid, R.id.name,R.id.reference });
                        // updating listview
                        setListAdapter(adapter);
                    }
                });
     
            }
     
        }
    }
    
    
    

